! Huistaak TWS 1
!
! Roel Matthysen
! s0202264
! 1e Master Wiskundige Ingenieurstechnieken
!
! find_integer_kinds
! gespendeerde tijd: 2 uur
!
! getest met gfortran version 4.7.0, G95 version 0.92, 
! gfortran -o
!
!

program find_integer_kinds

implicit none
integer :: i, k, bytes, bits, k_old = selected_int_kind(0)
double precision max,min


do i = 1, 50

k = selected_int_kind(i)
if ( k /= k_old .and. k /= -1 ) then
! 10**i is te groot, 10**(i-1) zit er nog wel in dus log2(10**(i-1)) is de
! grootste macht van 2 die kan voorgesteld worden. Ceil van dit getal gedeeld
! door acht geeft dus het aantal bytes die nodig zijn.
bits = ceiling((((i-1)/log10(2.0))+1))
bytes = ceiling((((i-1)/log10(2.0))+1)/8)
min = -2.0**(k*8-1)
max = 2.0**(k*8-1)-1
print *, 'Number of bytes : ', bytes, 'Number of bits : ', bits

!print *, 'kind: ', k, 'range: ', min, '-', max
end if
k_old = k

end do

end program